# -*- coding: utf-8 -*-
"""
Created on Tue Mar 14 21:38:27 2023

@author: maomao
"""

from scipy import stats
import numpy as np
import pylab

import pandas as pd
import matplotlib.pyplot as plt
#matplotlib inline
import statsmodels.api as sm
from statsmodels.tsa.arima.model import ARIMA#更新之后的值
from statsmodels.graphics.api import qqplot
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
import pandas as pd
import xlrd
worksheet = pd.read_excel('C://Users//maomao//Desktop//carbon peak.xlsx')
# 创建数据
data=worksheet.values#获取整个工作表数据
print("读取整个工作表的数据：\n{0}".format(data))
data0=worksheet.iloc[:,[0]].values
print("数据：\n{0}".format(data0))
data1=worksheet.iloc[:,[1]].values
print("数据：\n{0}".format(data1))
plt.scatter(data0,data1,s=20)
fig = plt.figure()
# 最终要画出几个图，分成一行一列的1块
ax1 = fig.add_subplot(1, 1, 1)
# 设置标题
ax1.set_title('PCA')
# 设置横坐标名称
ax1.set_xlabel('x')
# 设置纵坐标名称
ax1.set_ylabel('y')
# 画散点图
ax1.scatter(data0, data1, s=1, c='k', marker='*')
# 画直线图
ax1.plot(data0, data1, c='g', ls='--')
# 调整横坐标的上下界
plt.xlim(xmax=2030, xmin=2000)
plt.ylim(ymax=4000, ymin=1000)
plt.scatter(data1,data0,s=20)
# 显示
plt.show()

'''data1 = [1039.151217,1178.738157,1238.719759,1401.208827,1568.135656,2069.874104,2250.876956,2326.573736,2413.639162,2718.005913,2823.390824,3108.95749,3071.170319,3636.174018,3724.073882,3806.726183
]
print("len(data1) = ",len(data1))
data=pd.Series(data1)
print("len():", len(data))  # Series长度,包括NaN
print("shape():", np.shape(data))  # 矩阵形状，（，）
print("count():", data.count())  # Series长度，不包括NaN
print("unique():", data.unique())  # 出现不重复values值
print("value_counts():\n", data.value_counts())  # 统计value值出现次数
def adf_test(data):  # 传入时间序列
    print ('Results of Dickey-Fuller Test:')
    dftest = adfuller(data, autolag='AIC')
    dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
    for key,value in dftest[4].items():
       dfoutput['Critical Value (%s)'%key] = value
    print (dfoutput)
p=adf_test(data)
print(p)

data_index = sm.tsa.datetools.dates_from_range('2006','2021')
data.index = pd.Index(data_index)
# 绘制数据图
data.plot(figsize=(12,8))
plt.show()
# 创建ARMA模型
arma = ARIMA(data,order=(0,1,0)).fit()
arma.plot(figsize=(12,8))
print(arma)#获取被观测系统时间序列数据；
对数据绘图，观测是否为平稳时间序列；对于非平稳时间序列要先进行d阶差分运算，化为平稳时间序列；
经过第二步处理，已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF，通过对自相关图和偏自相关图的分析，得到最佳的阶层 p 和阶数 q
由以上得到的d、q、p，得到ARIMA模型。然后开始对得到的模型进行模型检验。
具体例子会在另一篇文章中给出。
print('AIC: %0.4lf' %arma.aic)
# 模型预测
predict_y = arma.predict('2021', '2050')

# 预测结果绘制
fig, ax = plt.subplots(figsize=(12, 8))
ax = data.ix['2007':].plot(ax=ax)
predict_y.plot(ax=ax)
plt.show()'''

